package bintree.leetcode;

/**
 * 对称的树
 * @author yuisama
 * @date 2022/05/13 19:02
 **/
public class Num101_SymmetricTree {
    public boolean isSymmetric(TreeNode root) {
        if (root == null) {
            return true;
        }
        // 传入两颗子树，就能判断这两棵树是否是镜像相等
        return isMirror(root.left,root.right);
    }

    /**
     * 传入两颗树的树根t1和t2，就能判断这两棵树是否是镜像相等的树
     * t1.val == t2.val
     * t1.left t2.right 镜像相等 & t1.right t2.left 镜像相等
     * @param t1
     * @param t2
     * @return
     */
    private boolean isMirror(TreeNode t1, TreeNode t2) {
        // 边界
        if (t1 == null && t2 == null) {
            return true;
        }
        if (t1 == null || t2 == null) {
            return false;
        }
        return t1.val == t2.val && isMirror(t1.left,t2.right) && isMirror(t1.right,t2.left);
    }
}